home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
C64
/
E-Education
/
(c)ed4.d64
/
zone x
(
.txt
)
< prev
Wrap
Commodore BASIC
|
2007-02-04
|
9KB
|
318 lines
1 GOTO910
2 PRINT"x[169][141][169][141]X` [234][255][169][255][133][145]L4[234]x[169]1[141][169][234][141]X`
3 [153]"xSTEPGINPUTSTOPSTEPINPUTONX` (null)(null)STEP(null)INPUTLISTLX(null)xSTEPUINPUTSTOPSTEP(null)INPUTONX`
4 PRINT"xhhh[170]h[168]hhhhhhh[152]H[138]HX`
5 [153]"hhhhhhh`
6 PRINT"[160][255][200][132][251][169][216][133][252] [241][183][138][162][160][255][200][145][251][136][208][251][230][252][202][208][246]`
7 [153]"NEWCLOSE(null)LEFT$>(null)ON(null)LET(null)(null)(null)(null)(null)(null)MID$(null)(null)`
35 IFUW=0THENSYSUU,15
40 POKEUC,0:POKEUN,0:UR$="":UI$="":IFUL=0THENUL=39
45 GETUI$:IFUI$=""THEN45
50 UA=ASC(UI$):UR=LEN(UR$):IFUA=13ANDUR>0THENPOKEUC,1:PRINT" [157]";:GOTO75
55 IFUA=20THENON-(UR=0)GOTO45:UR$=LEFT$(UR$,UR-1):PRINT"[157] [157][157]";:GOTO45
60 IFUR=ULTHEN45
65 GOSUB95:UR$=UR$+UI$:PRINTUI$;:GOTO45
75 FORUI=URTO1STEP-1:IFMID$(UR$,UI,1)=" "THENNEXT
80 UR$=LEFT$(UR$,UI):PRINT:RETURN
95 IFLEN(US$)=0THEN110
100 FORUI=1TOLEN(US$):IFUI$<>MID$(US$,UI,1)THENNEXT:UI$=""
105 RETURN
110 IFUA=46THENRETURN
115 IFUA=32ANDUR<>0THENRETURN
120 IFUA>47ANDUA<58THENRETURN
125 IFUA>64ANDUA<91THENRETURN
130 IFUA<193ORUA>218THENUI$="":RETURN
135 IFPEEK(UT)=UU%THENUI$=CHR$(UA-128)
140 RETURN
155 UZ=0:US$=UJ$:UG$=UK$:UT$=UL$:UP=UJ:UL=UK:PRINT"[147]";:POKEUY,6:POKEUX,6
160 POKEUT,UV%:POKE251,0:POKE252,UF:POKE253,0:POKE254,US/256:SYSUV:SYSUU,15
165 POKEU1,U1%:POKEU2,U2%:POKEU3,U3%-1:POKEU4,U4%:GOTO35
300 REM DERIVED FROM COMMODORE ONTARIO EDUCATIONAL SOFTWARE PROJECT 1983
310 REM PROJECT DIRECTOR: FRANK WINTER
320 REM PROGRAM NAME: ZONE X
330 REM WRITTEN BY BILL FINZER 1978
340 REM REVISED BY D. DAKERS"
350 [143] UPDATED BY BILL CUMBERLAND 90
400 [153]"LOAD":[151]UT,UL%:[151]UY,13:[151]UX,13:[151]646,0
405 [153]" (null)ELCOME TO (null)(null)(null)VALCLOSE- (null)"
410 [153]" RIGHT$'M GOING TO DRAW A GRID AND HIDE"
415 [153]" TWO LINES ON IT."
420 [153]" (null)OU ARE TO FIND THE POINT OF INTERSECTION.
425 PRINT" [212]O HELP YOU, [201]'VE CODED EACH
430 [153]" OF THE FOUR REGIONS CREATED BY THE LINES WITH ..."
435 [153]" *WAIT , /WAIT , +WAIT , OR -WAIT."
445 [141]820
450 [153]"LOAD (null)OU GUESS A POINT ((null),(null)) ON"
452 [153]" THE GRID, AND RIGHT$ WILL TELL YOU IN"
454 [153]" WHICH REGION IT IS LOCATED."
460 [153]" (null)HERE ARE ALSO SEVERAL POINTS ON
462 PRINT" THE LINES HIDDEN ON THE GRID"
464 PRINT" THAT WILL APPEAR AS BLANK SQUARES.
470 [153]" (null)HESE POINTS WILL GIVE YOU CLUES
474 PRINT" IN FINDING THE ACTUAL POINT OF INTERSECTION.
480 [153]" ATNT THE END OF THE GAME, RIGHT$ WILL
482 PRINT" REVEAL [193][204][204] IN GLORIOUS COLOUR!
490 [141]820:[142]
700 [143] <YES>
705 SS[178]54272:[129]EE[178]SS[164]SS[170]28:[151]EE,0:[130]
710 [151]54296,15:[151]54277,42:[151]54278,250
715 [151]54276,23:[151]54273,23:[151]54272,191
720 [129]TM[178]1[164]150:[130]:[151]54276,32:[129]TM[178]1[164]200:[130]
725 [151]54296,0:[142]
730 [143] <NO>
735 SS[178]54272:[129]EE[178]SS[164]SS[170]28:[151]EE,0:[130]
740 [151]54296,15:[151]54277,18:[151]54278,242
745 [151]54276,33:[151]54273,4:[151]54272,48
750 [129]TM[178]1[164]300:[130]:[151]54276,32:[129]TM[178]1[164]400:[130]
755 [151]54296,0:[142]
760 [143] <BLIP>
765 SS[178]54272:[129]EE[178]SS[164]SS[170]28:[151]EE,0:[130]
770 [151]54296,6:[151]54277,42:[151]54278,250
775 [151]54276,23:[151]54273,23:[151]54272,191
780 [129]TM[178]1[164]30:[130]:[151]54276,32:[129]TM[178]1[164]50:[130]
785 [151]54296,0:[142]
790 [129]TM[178]1[164]500:[130]:[142]
791 [129]TM[178]1[164]1000:[130]:[142]
792 [129]TM[178]1[164]2000:[130]:[142]
793 [129]TM[178]1[164]3000:[130]:[142]
795 [129]TM[178]1[164]5000:[130]:[142]
799 :
800 [153]"LOAD";:[151]UT,UU%:[151]UY,0:[151]UX,0:[151]646,5
801 [153]" A TPUG EDUCATIONAL PROGRAM
802 PRINT" FOR C64 COMPUTERS
803 [153]" GRADES 4-8":[141]791
804 [153]" WAIT";
805 [153]" WAIT";
806 [153]" WAIT";
807 [153]" ZONE X WAIT";
808 [153]" WAIT";
809 [153]" WAIT";
810 [153]" WAIT":[141]792:[141]760
811 [153]" INSTRUCTIONS? Y/N
812 GETUI$:IFUI$<>"Y"ANDUI$<>"N"THEN 812
813 IFUI$="Y"THENGOSUB400
814 PRINT"[147] AND AWAY WE GO.............":GOSUB792:GOSUB700
815 GOTO1000
820 GOSUB791:GOSUB760
823 POKEUN,0:PRINTLEFT$(UD$,24);"[208]RESS [211][208][193][195][197][160][194][193][210] TO CONTINUE[146]"
825 GETUI$:IFUI$<>" "THEN825
830 RETURN
835 GOSUB791:GOSUB760
837 POKEUN,0:PRINTLEFT$(UD$,24);"PRESS SPACE BAR TO CONTINUE[146]"
840 GETUI$:IFUI$<>" "THEN840
845 RETURN
850 UP=UP+1:PRINT"[147]"LEFT$(UT$+UP$,21);RIGHT$(UP$+UG$+STR$(UP),18)
855 PRINT" --------------------------------------"
860 IFUH=0THENPRINTLEFT$(UD$,24);LEFT$(UP$,7);"[193]NSWER, THEN PRESS [210][197][212][213][210][206][146]"
865 UH=0:PRINT"":RETURN
875 PRINTLEFT$(UD$,24);" ONE MOMENT PLEASE... ":RETURN
900 US=1024:U1=209:U2=210:U3=211:U4=214:UC=204:UB=2048:UX=53280:UD=2064
902 UT=53272:UU%=21:UL%=23:UP%=2151:UN=198:UY=53281:UU=2199:UE=2087
904 UC$=CHR$(155):UV=1214:UF=196:UV=2238
905 UD$="":UP$=" "
907 UT$="ZONE X"
908 IF UW=0THENPRINTCHR$(8)
909 RETURN
910 GOSUB900:PRINT"[147] "
920 GOTO800
1000 PRINT"[147]"UC$;:RESTORE:POKEUY,0:POKEUX,0
1010 REM ZONE X BY BILL FINZER
1020 REM OCTOBER, 1978
1030 IFUW=0THEN1040
1031 RESTORE:FORI=826TO848:READN:POKEI,N:NEXT
1032 DATA162,128,160,0,132,33,134,34,177
1033 DATA33,73,128,145,33,200,208,247,232
1034 DATA224,132,208,240,96
1040 POKE UT,UU%
1050 PRINT"[147]"
1060 PRINT" [166][166][166][166][166][166] [166][166][166][166][166][166] [166][166] [166][166] [166][166][166][166][166][166]
1070 [153]" SPC(SPC(SPC(SPC(SPC(SPC( SPC(SPC(SPC(SPC(SPC(SPC( SPC(SPC(SPC( SPC(SPC( SPC(SPC(SPC(SPC(SPC(SPC(
1080 PRINT" [166][166][166] [166][166] [166][166] [166][166][166][166] [166][166] [166][166]
1090 [153]" SPC(SPC(SPC( SPC(SPC( SPC(SPC( SPC(SPC(SPC(SPC(SPC(SPC(SPC( SPC(SPC(SPC(SPC(SPC(
1100 PRINT" [166][166][166] [166][166] [166][166] [166][166] [166][166][166][166] [166][166]
1110 [153]" SPC(SPC(SPC(SPC(SPC(SPC( SPC(SPC(SPC(SPC(SPC(SPC( SPC(SPC( SPC(SPC(SPC( SPC(SPC(SPC(SPC(SPC(SPC(
1120 PRINT" [166][166][166][166][166][166] [166][166][166][166][166][166] [166][166] [166][166] [166][166][166][166][166][166]
1130 [153]"
1140 PRINT" [214] [214][214]
1150 [153]" (null)(null)(null) (null)(null)(null)
1160 PRINT" [214][214][214] [214][214][214]
1170 [153]" (null)(null)(null) (null)(null)(null)
1180 PRINT" [214][214][214][214][214]
1190 [153]" (null)(null)(null)
1200 PRINT" [214][214][214][214][214]
1210 [153]" (null)(null)(null) (null)(null)(null)
1220 PRINT" [214][214][214] [214][214][214]
1230 [153]" (null)(null) (null)(null)
1240 PRINT
1250 REM MAIN CALLING ROUTINE
1260 GOSUB 1360: REM INITIALIZE
1270 GOSUB 1410 : REM INSTRUCTIONS
1280 GOSUB 1660 : REM DRAW GRID
1290 GOSUB 1870 : REM DRAW GUESS CHART
1300 GOSUB 1960: REM HIDE LINES AND COLOR REGIONS
1310 GOSUB 2190 : REM INPUT GUESS AND DISPLAY CLUE
1320 GOSUB 2550 : REM A WIN! DISPLAY AND FILL OUT GRID
1360 REM INITIALIZE
1370 P=RND(-TI)
1380 MOVES = 1
1390 L=5 : REM LINE# -1 FOR INPUT
1400 RETURN
1410 REM INSTRUCTIONS
1420 PRINT" WHAT IS YOUR NAME? ";
1430 US$="":UL=15:GOSUB35:N$=UR$
1460 RETURN
1660 REM DRAW GRID
1670 PRINT"[147]":IFUW=0THENSYSUU,15
1680 T=20
1690 PRINTTAB(T)" 15*...............
1700 [153][163]T)" (null)...............
1710 PRINTTAB(T)" [219]...............
1720 [153][163]T)" (null)...............
1730 PRINTTAB(T)" [219]...............
1740 [153][163]T)" 10*...............
1750 PRINTTAB(T)" [219]...............
1760 [153][163]T)" (null)...............
1770 PRINTTAB(T)" [219]...............
1780 [153][163]T)" (null)...............
1790 PRINTTAB(T)" 5*...............
1800 [153][163]T)" (null)...............
1810 PRINTTAB(T)" [219]...............
1820 [153][163]T)" (null)...............
1830 PRINTTAB(T)" [219]...............
1840 [153][163]T)" 0*(null)(null)(null)(null)*(null)(null)(null)(null)*(null)(null)(null)(null)*
1850 PRINTTAB(T)" 0 5 10 15
1860 [142]
1870 [143] DRAW GUESS CHART
1880 [153]" ZONE X
1890 PRINT" "N$"'S
1900 [153]" GUESS PEEK CLUE
1910 PRINT" X,Y [194]
1920 [129]I[178]1[164]18
1930 [153]" PEEK
1940 NEXTI
1950 RETURN
1960 REM HIDE LINES AND COLOR REGIONS
1970 PX=INT(RND(1)*12)+3:REM INTERSECTION
1980 PY=INT(RND(1)*12)+3:
1990 LX=INT(RND(1)*15)+1:REM LINES
2000 LY=INT(RND(1)*15)+1
2010 REM COLOR THE REGIONS
2020 R1=INT(RND(1)*4)+1
2030 R2=INT(RND(1)*4)+1:IF R2=R1 THEN 2030
2040 R3=INT(RND(1)*4)+1
2050 IF R3=R2 OR R3=R1 THEN 2040
2060 R4=INT(RND(1)*4)+1
2070 IF R4=R1 OR R4=R2 OR R4=R3 THEN 2060
2080 C$(R1)="[158]*[146][155]"
2090 C$(R2)="[150]/[146][155]"
2100 C$(R3)="[159]+[146][155]"
2110 C$(R4)="[153]-[146][155]
2120 C$(5)[178]" WAITLIST
2130 X1=PX:Y1=PY:X2=LX:Y2=0
2140 GOSUB 3050:T1=THETA
2150 X2=0:Y2=LY
2160 GOSUB 3050:T2=THETA
2170 IF INT((T2+(null))*1000)=INT(T1*1000) THEN 1960
2180 RETURN
2190 REM INPUT GUESS AND DISPLAY CLUES
2200 IF L>20 THEN L=5:GOSUB4000
2210 POKE U4,L:PRINT
2230 MOVES = MOVES +1
2240 L=L+1
2250 GOSUB 2910
2255 IFB$="Q"THENLP=1:GOTO2635
2260 I1=0
2270 FOR I=1 TO LEN(B$)
2280 IF MID$(B$,I,1)="," THEN I1=I:GOTO2310
2290 NEXT I
2300 IF I1=0 THEN2332
2310 X=VAL(LEFT$(B$,I1))
2320 Y=VAL(RIGHT$(B$,LEN(B$)-I1))
2330 IFX<0ORY<0 OR X>15ORY>15THEN2332
2331 GOTO2340
2332 IFL+3>20THENL=5:GOSUB4000:POKEU4,L:PRINT
2333 GOSUB730:PRINT"[150] ILLEGAL":PRINT" MOVE[155]":L=L+2:GOTO2240
2340 REM FIND REGION
2350 IF X=PX AND Y=PY THEN 2400 :REM'GOT IT!'
2360 GOSUB 2410 LOCATE REGION
2370 PRINT"[145]"TAB(11)C$(R)
2380 GOSUB 3000: PRINTC$(R):REM PRINT CLUE ON GRAPH
2390 GOTO 2200
2400 RETURN
2410 REM ISOLATE WHICH REGION
2420 X1=X:Y1=Y
2430 X2=LX:Y2=0
2440 GOSUB 3050:AX=THETA
2450 IF THETA=-100 THEN R=5: GOTO 2540
2460 X2=0:Y2=LY
2470 GOSUB 3050:AY=THETA
2480 IF THETA=-100 THEN R=5: GOTO 2540
2490 IF AX=T1 OR AY=T2 THEN R=5:GOTO 2540
2500 IF AX<T1 AND AY<T2 THEN R=1:GOTO 2540
2510 IF AX<T1 AND AY>T2 THEN R=2:GOTO 2540
2520 IF AX>T1 AND AY>T2 THEN R=3:GOTO 2540
2530 IF AX>T1 AND AY<T2 THEN R=4:GOTO 2540
2540 RETURN
2550 REM DISPLAY FOR WIN
2560 GOSUB3400
2590 IF TI<T9+30 THEN 2590
2620 PRINTTAB(10)"[158]YOU GOT IT!"
2625 PRINTTAB(10)"IN"MOVES-1"MOVES!"
2630 GOSUB700:GOSUB793
2635 PRINTTAB(10)"IT WAS AT":PRINTTAB(10)PX","PY"![155]"
2640 GOSUB760:GOSUB760:GOSUB795
2645 FOR X=0 TO 15
2650 FOR Y=0 TO 15
2660 GOSUB 2410
2670 GOSUB 3000:PRINTC$(R)
2680 NEXT Y
2690 NEXT X
2700 X=PX:Y=PY
2710 GOSUB 3000
2720 FOR I= 1 TO 10
2730 PRINT" [146][157]";
2740 T9=TI
2750 IF TI<T9+30 THEN 2750
2760 PRINT" [157]";:IF TI<T9+60 THEN 2760
2770 NEXT I
2780 PRINT" [146]"
2790 POKEU4,23:PRINT
2800 GOSUB835:GOSUB790:GOSUB760:PRINT"[147] PLAY AGAIN, "N$"? (Y/N) [155]";
2810 US$="YN":UL=1:GOSUB35:A$=UR$
2815 IF A$="Y"THENRESTORE:GOSUB1360:GOTO1280
2825 PRINT"[147] RETURNING TO THE MAIN MENU"
2830 LOAD"MENU",8
2840 RUN
2850 END
2899 :
2910 REM BUILD UP A STRING. DON'T ACCEPT EMPTY STRING
2920 PRINT" ";:US$="1234567890,QH":UL=5:GOSUB35:B$=UR$:RETURN
3000 REM MOVE CURSOR TO X,Y ON GRID
3010 IF 16-Y<0 THEN PRINT"";: GOTO 3030
3020 POKEU4,15-Y:PRINT
3030 PRINTTAB(X+23);
3040 RETURN
3050 REM FIND ANGLE THETA FROMPOINT 2 TO POINT 1
3060 IF X1=X2 AND Y1=Y2 THEN THETA=-100: GOTO 3140
3070 IF X1=X2 AND Y1<Y2 THEN THETA=-(null)/2: GOTO 3140
3080 IF X1=X2 AND Y1>Y2 THEN THETA= (null)/2: GOTO 3140
3090 IF Y1=Y2 AND X1>X2 THEN THETA= 0 : GOTO 3140
3100 IF Y1=Y2 AND X1<X2 THEN THETA= (null) : GOTO 3140
3110 THETA = ATN((Y1-Y2)/(X1-X2))
3120 IF X1<X2 AND Y1>Y2 THEN THETA= THETA+(null)
3130 IF X1<X2 AND Y1<Y2 THEN THETA= THETA-(null)
3140 RETURN
3400 QQ=0:FORJ=1TO10:IFUW<>0THENSYS826
3402 IFUW=0THENPOKEUX,Q:POKEUY,Q:Q=Q+1
3404 P=.3:GOSUB3430:NEXT
3406 IFUW=0THENPOKEUY,6:POKEUX,14
3410 RETURN
3430 P=P*60
3440 T=TI
3450 IFTI<T+PTHEN3450
3460 RETURN
4000 PRINT"";:FORI=1TO18:PRINT" [194] "
4010 NEXTI:RETURN
4100 REM WHC 90:11:29
4999 :